
import option
from option import Option
import helpers

class Mode:
	class options(option.ContainerClass):
		data={}
		pass

	def __init__(self,name):
		self.options().name=name

		conf=Option().config
		self.options().pretty=conf.get('modes.'+name+'.name',name)
		self.load()
	
		Option().windowMain.sideText.append(self.side_text)


	def teardown(self):
		Option().windowMain.sideText.remove(self.side_text)
		conf=Option().config
		self.save()

	def save(self):
		conf=Option().config
		conf.set('modes.'+self.options().name+'.best',str(self.options().best))
		conf.set('modes.'+self.options().name+'.bestavg',str(self.options().bestavg))
		conf.save()
	
	def load(self):
		conf=Option().config
		self.options().best=float(conf.get('modes.'+self.options().name+'.best',-1.0))
		self.options().bestavg=float(conf.get('modes.'+self.options().name+'.bestavg',-1.0))


	def besttime(self,t):
		if t<self.options().best or self.options().best==-1.0:
			self.options().best=t
			self.save()
			return True
		else:
			return False


	def bestavg(self,t):
		if t==-1.0: return False
		if t<self.options().bestavg or self.options().bestavg==-1.0:
			self.options().bestavg=t
			self.save()
			return True
		else:
			return False
	
	def process_time(self,t):
		self.besttime(t)
		self.bestavg(Option().session.options().average)

	def side_text(self):
		if self.options().prettyname:
			return (_('OVERALL'), [
				_('Mode')+': '+str(self.options().prettyname),
				_('Best time')+': '+helpers.fmt(self.options().best),
				_('Best average')+': '+helpers.fmt(self.options().bestavg),
				])
		else:
			return (_('OVERALL'), [
				_('Best time')+': '+helpers.fmt(self.options().best),
				_('Best average')+': '+helpers.fmt(self.options().bestavg),
				])


def init():
	pass

